impl Solution {
    pub fn max_product(words: Vec<String>) -> i32 {
        let mut set=Vec::<u32>::with_capacity(words.len());
        for word in words.iter(){
            let mut t :u32=0;
            for i in word.as_bytes(){
                t|=1<<(i-b'a')
            }
            set.push(t);
        };
        let mut res :i32=0;
        for i in 0..set.len(){
            for j in i..set.len(){
                if set[i]&set[j]==0{
                    let t=(words[i].len()*words[j].len()) as i32;
                    if t>res{
                        res=t;
                    }
                } 
            }
        }
        res
    }
}